指针问题 若有定义:int w[3][5];,则以下不能正确表示该数组元素的表达式是________。

来源:百度知道 编辑:UC知道 时间:2024/05/27 03:52:13
请解释下错误选项错误的原因
选项 A)*(*w+3) B)*(w+1)[4] C)*(*(w+1)) D)*(&w[0][0]+1)

D)*(&w[0][0]+1)
int 型存储整数的位数依机器的不同而异
&w[0][0]+1 只是指针指向下一个单元,INT如果占用两个存储单元的话,则取值肯定不正确。如果是定义一个INT型的指针的话*P+1应该是正确的

B
因为在B中的*(w+1)返回的是一个指针地址,当指针地址再做数组运算的时候就出错了!

A和C;*W表示W数组的第一个元素

D)*(&w[0][0]+1)
& 是不可以的

B
完全是迷惑人的 (*(w+1))[4] 优先级问题
A *(*w+3) = w[0][3], *w == &w[0]
C *(*(w+1)) = w[1][0]
D *(&w[0][0]+1) = w[0][1]